# @Filename:    statistics
# @Author:      王佳伟
# @Time:        2025-04-07 17:01
# @Describe:    统计函数
import numpy as np

# numpy.amin() 和 numpy.amax()
# 这些函数从给定数组中的元素沿指定轴返回最小值和最大值。
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print('我们的数组是：')
print(a)
print('\n')
print('调用amin()函数：')
print(np.amin(a, 1))
print('\n')
print('再次调用amin()函数：')
print(np.amin(a, 0))
print('\n')
print('调用amax()函数：')
print(np.amax(a))
print('\n')

print('=========================')

# numpy.ptp()
# numpy.ptp()函数返回沿轴的值的范围（最大值 - 最小值）。
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print('我们的数组是：')
print(a)
print('\n')
print('调用ptp()函数：')
print(np.ptp(a))
print('\n')
print('沿轴1调用ptp()函数：')
print(np.ptp(a, axis = 1))
print('\n')
print('沿轴0调用ptp()函数：')
print(np.ptp(a, axis = 0))

print('=========================')
# numpy.percentile()
# 百分位数是统计中使用的度量，表示小于这个值得观察值占某个百分比。 函数numpy.percentile()接受以下参数。
# numpy.percentile(a, q, axis)
# 1.	a 输入数组
# 2.	q 要计算的百分位数，在 0 ~ 100 之间
# 3.	axis 沿着它计算百分位数的轴
a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]])
print('我们的数组是：')
print(a)
print('\n')
print('调用percentile()函数：')
print(np.percentile(a, 50))
print('\n')
print('沿轴1调用percentile()函数：')
print(np.percentile(a, 50, axis = 1))
print('\n')
print('沿轴0调用percentile()函数：')
print(np.percentile(a, 50, axis = 0))

print('=========================')
# numpy.median()
# 中值定义为将数据样本的上半部分与下半部分分开的值
a = np.array([[30, 65, 70], [80, 95, 10], [50, 90, 60]])
print('我们的数组是：')
print(a)
print('\n')
print('调用median()函数：')
print(np.median(a))
print('\n')
print('沿轴0调用median()函数：')
print(np.median(a, axis = 0))
print('\n')
print('沿轴1调用median()函数：')
print(np.median(a, axis = 1))

print('=========================')
# numpy.mean()
# 算术平均值是沿轴的元素的总和除以元素的数量。
# numpy.mean()函数返回数组中元素的算术平均值。 如果提供了轴，则沿其计算。
a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print('我们的数组是：')
print(a)
print('\n')
print('调用mean()函数：')
print(np.mean(a))
print('\n')
print('沿轴0调用mean()函数：')
print(np.mean(a, axis = 0))
print('\n')
print('沿轴1调用mean()函数：')
print(np.mean(a, axis = 1))

print('=========================')

# numpy.average()
# 加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。
a = np.array([1, 2, 3, 4])
print('我们的数组是：')
print(a)
print('\n')
print('调用average()函数：')
print(np.average(a))
print('\n')
# 不指定权重时相当于 mean 函数
wts = np.array([4, 3, 2, 1])
print('再次调用average()函数：')
print(np.average(a, weights = wts, returned = True))

print('=========================')

a = np.arange(6).reshape(3, 2)
print('我们的数组是：')
print(a)
print('\n')
print('修改后的数组：')
wt = np.array([3, 5])
print(np.average(a, axis = 1, weights = wt))
print('\n')
print('修改后的数组：')
print(np.average(a, axis = 1, weights = wt, returned = True))

print('=========================')

# 标准差
# 标准差是与均值的偏差的平方的平均值的平方根。 标准差公式如下：
# std = sqrt(mean((x - x.mean())**2))
print(np.std([1, 2, 3, 4]))
# 方差
# 方差是偏差的平方的平均值，即mean((x - x.mean())** 2)。 换句话说，标准差是方差的平方根。
print(np.var([1, 2, 3, 4]))





